#!/usr/bin/env python3
import requests
import re
from datetime import datetime

def locate_hardcoded_data():
    """精确定位硬编码数据的位置"""
    print("=== 精确定位硬编码数据 ===")
    print(f"时间: {datetime.now()}")
    
    try:
        # 1. 获取HTML响应
        print("\n1. 获取HTML响应...")
        response = requests.post('http://127.0.0.1:5000', data={'coin': 'BTC'})
        html_content = response.text
        
        # 2. 查找具体的数值
        target_values = ['22.88', '-77.12', '-48.71', '98.31']
        
        print("\n2. 查找目标数值...")
        lines = html_content.split('\n')
        
        found_lines = []
        for i, line in enumerate(lines):
            for value in target_values:
                if value in line:
                    found_lines.append({
                        'line_num': i + 1,
                        'content': line.strip(),
                        'value': value
                    })
        
        if found_lines:
            print(f"\n发现 {len(found_lines)} 行包含目标数值:")
            
            for item in found_lines:
                print(f"\n第{item['line_num']}行 (值: {item['value']}):")
                print(f"  {item['content']}")
                
                # 显示上下文
                start = max(0, item['line_num'] - 6)
                end = min(len(lines), item['line_num'] + 5)
                
                print("  上下文:")
                for j in range(start, end):
                    marker = ">>> " if j == item['line_num'] - 1 else "    "
                    print(f"  {marker}{j+1:3d}: {lines[j]}")
        
        # 3. 查找包含这些数值的HTML结构
        print("\n3. 分析HTML结构...")
        
        # 查找包含detail-value类的span标签
        detail_value_pattern = r'<span class="detail-value">([^<]+)</span>'
        detail_matches = re.findall(detail_value_pattern, html_content)
        
        print(f"发现 {len(detail_matches)} 个detail-value标签:")
        for i, match in enumerate(detail_matches):
            if match in target_values:
                print(f"  ❌ 第{i+1}个: {match} (这是已移除的指标数据!)")
            else:
                print(f"  ✅ 第{i+1}个: {match}")
        
        # 4. 查找包含这些数值的完整HTML块
        print("\n4. 查找完整的HTML块...")
        
        for value in target_values:
            # 查找包含该值的完整div或其他容器
            pattern = rf'<div[^>]*>.*?{re.escape(value)}.*?</div>'
            matches = re.findall(pattern, html_content, re.DOTALL)
            
            if matches:
                print(f"\n值 {value} 的HTML容器:")
                for j, match in enumerate(matches[:2]):  # 只显示前2个
                    print(f"  容器 {j+1}: {match[:200]}...")
        
        # 5. 检查是否是动态生成的数据
        print("\n5. 检查数据生成方式...")
        
        # 查找Jinja2模板变量
        jinja_pattern = r'\{\{[^}]+\}\}'
        jinja_matches = re.findall(jinja_pattern, html_content)
        
        print(f"发现 {len(jinja_matches)} 个Jinja2变量")
        
        # 查找可能相关的变量
        tech_vars = [var for var in jinja_matches if 'technical' in var.lower()]
        if tech_vars:
            print("技术分析相关变量:")
            for var in tech_vars[:10]:
                print(f"  {var}")
        
        # 6. 总结发现
        print("\n6. 总结发现")
        print("=" * 50)
        
        if found_lines:
            print(f"❌ 在HTML响应中发现 {len(found_lines)} 行包含已移除指标的数据")
            print("\n这些数据可能来源于:")
            print("  1. 服务器端生成的默认/测试数据")
            print("  2. 技术分析模块返回的遗留数据")
            print("  3. 模板渲染过程中的数据注入")
            
            print("\n需要检查的文件:")
            print("  - enhanced/technical_analysis.py (TechnicalIndicators类)")
            print("  - app.py (get_technical_analysis函数)")
            print("  - templates/index.html (模板逻辑)")
        else:
            print("✅ 未在HTML响应中发现已移除指标的数据")
    
    except Exception as e:
        print(f"定位过程中出错: {e}")
        import traceback
        traceback.print_exc()

if __name__ == '__main__':
    locate_hardcoded_data()